<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  // 1. 封装一个函数,传入一个日期,返回该月的第一天 是星期几? (星期天)
  // 2. 封装一个函数,传入一个日期,返回该日期对应的上个月有多少天? (上个月)
  // 3. 封装一个函数,传入一个日期,返回该日期对应的月有多少天?  (当前月)

  // 不影响原日期   日期对象 引用类型 => 直接修改日期对象 影响原日期 


  // 1. 封装一个函数,传入一个日期,返回该月的第一天 是星期几? (星期天)
  // (1)  修改日期为1  
  // (2)  返回对应的星期

  // var date = new Date();
  // date.setDate(1);
  // var week = date.getDay()
  // console.log(week);

  /* function getFirstDayWeek(date) {
    //根据原日期得到一个新日期   => 重新赋值给形参
    date = new Date(date);
    date.setDate(1);
    var week = date.getDay()
    return week == 0 ? 7 : week;
  }
  var date = new Date();
  console.log(date);
  var result = getFirstDayWeek(date);
  console.log(result);
  console.log(date); */


  // 2. 封装一个函数,传入一个日期,返回该日期对应的上个月有多少天? (上个月)
  // (1)  本月的第0天就是上个月的最后一天  
  // (2)  最后一天是 几号就有多少天!

  // var date = new Date();
  // date.setDate(0);   // 2021-8-0 =>  2021-7-31
  // var day = date.getDate();
  // console.log(day);

  /* function getBeforeMonthDays(date) {
    //根据原日期得到一个新日期   => 重新赋值给形参
    date = new Date(date);
    date.setDate(0);   // 2021-8-0 =>  2021-7-31
    return date.getDate();
  }
  var date = new Date();
  console.log(date);
  var result = getBeforeMonthDays(date);
  console.log(result);
  console.log(date); */


  // 3. 封装一个函数,传入一个日期,返回该月有多少天? (当前月)
  // (1)  下个月的第0天就是本月的最后一天  
  // (2)  本月的最后一天几号就有多少天!

  // 问题: 大月向小月切换时  (31 -> 30, 30,31->29,28) 会有问题

  /*  var date = new Date("2021-8-31");

   // 获取对应的月份  再往后推一个月    2021-8-31 => 2021-9-31 => 2021-10-1
   date.setMonth(date.getMonth()+1);
   date.setDate(0);   //  2021-10-1 => 2021-10-0  =>2021-9-30
   var day = date.getDate();
   console.log(day); */

  // 问题: 大月向小月切换时  (31 -> 30, 30,31->29,28) 会有问题
  // 怎么解决?
  // 提前将日期设置为 每个月都有的日期  => 后面都会被再次改为0

  // var date = new Date("2021-8-31");

  // date.setDate(1);    // 2021-8-1
  // // 获取对应的月份  再往后推一个月    2021-8-1  => 2021-9-1
  // date.setMonth(date.getMonth()+1);
  // date.setDate(0);   // 2021-9-0 => 2021-8-31
  // var day = date.getDate();
  // console.log(day);


  function getThisMonthDays(date) {
    date = new Date(date);

    date.setDate(1);    // 2021-8-1
    // 获取对应的月份  再往后推一个月    2021-8-1  => 2021-9-1
    date.setMonth(date.getMonth() + 1);
    date.setDate(0);   // 2021-9-0 => 2021-8-31
    return date.getDate();
  }

  var date = new Date();
  var result = getThisMonthDays(date);
  console.log(result);
  console.log(date);




</script>

</html>